package com.dtsheep.rxjava.stduy.observable;

import rx.Observable;

/**
 * ConcatMapDemo
 *
 * <p>
 *     concatMap 操作符
 * </p>
 *
 * @author chuanbai
 * @date 2024/5/18
 */
public class ConcatMapDemo {

    /**
     * concatMap 操作符
     * concatMap 是一个操作符，它是 map 和 concat 的组合，用于将 Observable 的发射物转换为另一个 Observable，
     * 并且将这些新的 Observable 序列以串行的方式（一个接一个）连接起来，然后发射输出。
     * concatMap 通常用于确保异步操作的顺序执行，防止它们并发执行可能导致的问题。
     *
     * @param
     * @return
     * @author chuanbai
     * @date ${DATE}
     */
    public void concatMap01() {
        Observable<String> observable01 = Observable.just("1");
        Observable<String> observable02 = Observable.just("2");
        // Observable<Observable<String>> just = Observable.just(observable01, observable02);

        // concatMap 等价 flatMap
        Observable<Observable<String>> concatMap = observable01.concatMap(res -> Observable.just(observable01, observable02));

        concatMap.subscribe(obj -> System.out.println(obj));
    }

        public static void main(String[] args) {
            ConcatMapDemo concatMapDemo = new ConcatMapDemo();
            concatMapDemo.concatMap01();
        }
}
